# -*- coding: utf-8 -*-

from odoo import models, fields, api


class ItemRoleCategory(models.Model):
    _name = 'item.role.category'
    _description = '报名项目角色分类'
    _order = 'sequence, id'
    
    name = fields.Char(string='分类名称', required=True)
    sequence = fields.Integer(string='排序', default=10)
    description = fields.Text(string='分类描述')
    active = fields.Boolean(string='启用', default=True)
    
    # 关联的报名项目
    item_ids = fields.One2many('activity.registration.item', 'role_category_id', string='报名项目')
    item_count = fields.Integer(string='项目数量', compute='_compute_item_count')
    
    @api.depends('item_ids')
    def _compute_item_count(self):
        for record in self:
            record.item_count = len(record.item_ids)
    
    def create_default_categories(self):
        """创建默认的角色分类"""
        categories = [
            {'name': '会议角色', 'sequence': 10, 'description': '主持人、计时官、总评官等会议组织角色'},
            {'name': '备稿演讲', 'sequence': 20, 'description': '准备好主题的正式演讲'},
            {'name': '即兴演讲', 'sequence': 30, 'description': '即兴话题演讲'},
            {'name': '点评', 'sequence': 40, 'description': '对演讲者的点评'},
        ]
        
        created_count = 0
        skipped_count = 0
        
        for cat_data in categories:
            # 检查是否已存在
            existing = self.search([('name', '=', cat_data['name'])], limit=1)
            if not existing:
                self.create(cat_data)
                created_count += 1
            else:
                skipped_count += 1
        
        # 返回用户友好的消息
        if created_count > 0:
            message = f'成功创建 {created_count} 个默认分类'
            if skipped_count > 0:
                message += f'，{skipped_count} 个分类已存在'
            return {
                'type': 'ir.actions.client',
                'tag': 'display_notification',
                'params': {
                    'title': '创建成功',
                    'message': message,
                    'type': 'success',
                    'sticky': False,
                }
            }
        else:
            return {
                'type': 'ir.actions.client',
                'tag': 'display_notification',
                'params': {
                    'title': '提示',
                    'message': '所有默认分类已存在，无需创建',
                    'type': 'info',
                    'sticky': False,
                }
            }
    
    _sql_constraints = [
        ('name_unique', 'UNIQUE(name)', '分类名称必须唯一！')
    ]

